import {isLogin, refreshlogin} from './user'
import {AppInfo} from './AppInfo'
import {Api} from '../service/api'

// 支付类，负责处理支付逻辑
export class Pay {
	static appInfo = {} // 应用信息
	static playConfig = {} // 支付配置
	static params = null

	/**
	 * 构造函数，初始化支付类
	 */
	constructor(params) {
		this.params = params
		console.log(params, 'params');
		this.appInfo = AppInfo.getInstance().getAppInfo()
		// 如果用户未登录，则不执行后续操作
		if (!isLogin()) return
		this.load()
	}

	/**
	 * 抖音支付
	 * @return {Promise<void>}
	 */
	async dyPay() {
		// 根据操作系统选择不同的支付方式
		if (this.appInfo.osName === 1) {
			// 安卓
			this.params.subject = uni.getStorageSync('appConfig').subject
			// 抖音拉取支付获取签名
			const {data} = await Api.dyGetPaySign(this.params)
			this.playConfig = data
			// console.log(this.playConfig, 'this.playConfig ');
			await this.dyVirtualPayment()
		} else {
			// ios
			// const {
			// 	data
			// } = await Api.getPayConfig(this.params)
			const {data} = await Api.dyGetPaySign(this.params)
			this.playConfig = data
			await this.dyVirtualPayment()
		}
	}

	/**
	 * 加载支付配置并初始化支付
	 * @return {Promise<void>}
	 */
	async load() {
		// 设置支付
		await this.dyPay()
	}

	/**
	 * 支付成功后的处理
	 */
	async paySuccess() {
		// 处理支付成功逻辑
		let res = await Api.PayCallBack({
			outTradeNo: this.params.outTradeNo
		})
		console.log('支付成功',res)
		// 更新用户信息
		setTimeout(async () => {
			await refreshlogin()
			uni.$emit('update', {
				msg: '页面更新'
			})
		}, 500)
	}


	// 抖音虚拟支付
	async dyVirtualPayment() {
		console.log(this.playConfig.datam)
		//拉起收银台
		uni.showLoading({
			title: '加载中',
			mask: true // 是否显示透明蒙层，防止触摸穿透
		})
		await tt.requestOrder({
			header: {
				"Content-Type": "application/json",
			},
			data: this.playConfig.datam,
			byteAuthorization: this.playConfig.byteAuthorization,
			success: (res) => {
				console.log("res", res);
				//拉起收银台
				tt.getOrderPayment({
					orderId: res.orderId,
					// imId: "56916992",
					success: (res) => {
						// this.paySuccess()
						setTimeout(async () => {
							await refreshlogin()
							uni.$emit('update', {
								msg: '页面更新'
							})
							uni.hideLoading()
							// uni.showToast({
							// 	title: "充值成功",
							// 	icon: "success"
							// })
						}, 1200)
						//查询订单信息
					},
					fail: (res) => {
						console.log("支付失败", res)
						uni.hideLoading()
					},
				});
			},
			fail: (res) => {
				uni.hideLoading()
				uni.showToast({
					title: "请求出错，" + res.errMsg,
					icon: "none"
				})
				console.log("请求出错", res)
			},
		});
	}
}